home *** CD-ROM | disk | FTP | other *** search
/ Robert Mapplethorpe - An Overview / Robert Mapplethorpe - An Overview.iso / axs.mst < prev    next >
Text File  |  1995-06-26  |  13KB  |  381 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST BADPATH       = 6400
  20.  
  21. ''Bitmap ID
  22. CONST LOGO = 1
  23.  
  24. GLOBAL DEST$        ''Default destination directory.
  25. GLOBAL OPTCUR$      ''Option selection from option dialog.
  26.  
  27. DECLARE SUB Install
  28. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  29. DECLARE FUNCTION InstallQT  AS INTEGER
  30. DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
  31. DECLARE FUNCTION CheckForOld AS INTEGER
  32.  
  33. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  34.  
  35.  
  36. DECLARE FUNCTION GetQTWVersion LIB "setupenu.dll" (szDLL$) AS INTEGER
  37. DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  38. DECLARE FUNCTION StartCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  39. DECLARE FUNCTION StopCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  40.  
  41.  
  42. INIT:
  43.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  44.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  45.  
  46.     SetBitmap CUIDLL$, LOGO
  47.     SetTitle "Mapplethorpe CD Setup"
  48.  
  49.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  50.     IF szInf$ = "" THEN
  51.     szInf$ = GetSymbolValue("STF_CWDDIR") + "axs.INF"
  52.     END IF
  53.     ReadInfFile szInf$
  54.  
  55. WELCOME:
  56.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  57.     IF sz$ = "CONTINUE" THEN
  58.     UIPop 1
  59.     ELSE
  60.     GOSUB ASKQUIT
  61.     GOTO WELCOME
  62.     END IF
  63.  
  64.     res% = InstallQT
  65.  
  66.     Install
  67.  
  68.  
  69. QUIT:
  70.     ON ERROR GOTO ERRQUIT
  71.  
  72.     IF ERR = 0 THEN
  73.     dlg% = EXITSUCCESS
  74.     ELSEIF ERR = STFQUIT THEN
  75.     dlg% = EXITQUIT
  76.     ELSE
  77.     dlg% = EXITFAILURE
  78.     END IF
  79. QUITL1:
  80.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  81.     IF sz$ = "REACTIVATE" THEN
  82.     GOTO QUITL1
  83.     END IF
  84.     UIPop 1
  85.  
  86.     END
  87.  
  88. ERRQUIT:
  89.     i% = DoMsgBox("Setup sources were corrupted, call AXS at (510) 540-5232!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  90.     END
  91.  
  92.  
  93.  
  94. BADPATH:
  95.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  96.     IF sz$ = "REACTIVATE" THEN
  97.     GOTO BADPATH
  98.     END IF
  99.     UIPop 1
  100.     RETURN
  101.  
  102.  
  103.  
  104. ASKQUIT:
  105.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  106.  
  107.     IF sz$ = "EXIT" THEN
  108.     UIPopAll
  109.     ERROR STFQUIT
  110.     ELSEIF sz$ = "REACTIVATE" THEN
  111.     GOTO ASKQUIT
  112.     ELSE
  113.     UIPop 1
  114.     END IF
  115.     RETURN
  116.  
  117.  
  118.  
  119. '**
  120. '** Purpose:
  121. '**     Builds the copy list and performs all installation operations.
  122. '** Arguments:
  123. '**     none.
  124. '** Returns:
  125. '**     none.
  126. '*************************************************************************
  127. SUB Install STATIC
  128.  
  129.     GroupName$ = "Mapplethorpe Overview"
  130.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  131.  
  132.     CreateIniKeyValue "WIN.INI", "Extensions", "mpo", MakePath(SrcDir$,"imageaxs\imageaxs.exe ^.mpo"), cmoOverwrite
  133.     CreateIniKeyValue "WIN.INI", "Extensions", "dqt", MakePath(SrcDir$,"imageaxs\qtdci.exe ^.dqt"), cmoOverwrite
  134.     CreateProgmanGroup GroupName$, "", cmoNone
  135.     ShowProgmanGroup  GroupName$, 1, cmoNone
  136.  
  137.     CreateProgmanItem GroupName$, "Robert Mapplethorpe", MakePath(SrcDir$,"mapple.exe"), "", cmoOverwrite
  138.     CreateProgmanItem GroupName$, "Photo Gallery", MakePath(SrcDir$,"mapple.mpo"), "", cmoOverwrite
  139.     CreateProgmanItem GroupName$, "ReadMe", MakePath(SrcDir$,"readme.wri"), "", cmoOverwrite
  140.     CreateProgmanItem GroupName$, "ReadMe2", MakePath(SrcDir$,"readme2.wri"), "", cmoOverwrite
  141.     CreateProgmanItem GroupName$, "CD-ROM Catalog", MakePath(SrcDir$,"sampler\sampler.exe"), "", cmoOverwrite
  142.     CreateProgmanItem GroupName$, "Feature Tour", MakePath(SrcDir$,"tour\tour.exe"), "", cmoOverwrite
  143. END SUB
  144.  
  145.  
  146.  
  147. '**
  148. '** Purpose:
  149. '**     Appends a file name to the end of a directory path,
  150. '**     inserting a backslash character as needed.
  151. '** Arguments:
  152. '**     szDir$  - full directory path (with optional ending "\")
  153. '**     szFile$ - filename to append to directory
  154. '** Returns:
  155. '**     Resulting fully qualified path name.
  156. '*************************************************************************
  157. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  158.     IF szDir$ = "" THEN
  159.     MakePath = szFile$
  160.     ELSEIF szFile$ = "" THEN
  161.     MakePath = szDir$
  162.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  163.     MakePath = szDir$ + szFile$
  164.     ELSE
  165.     MakePath = szDir$ + "\" + szFile$
  166.     END IF
  167. END FUNCTION
  168.  
  169. rem InstallQT: Perform actual installation
  170. rem ------------------------------------
  171.  
  172. FUNCTION InstallQT STATIC AS INTEGER
  173.  
  174. rem Initialize global vriables
  175. rem --------------------------
  176.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  177.     DEST$           = GetWindowsSysDir
  178.     DEST2$          = GetWindowsDir
  179.     DEST3$          = "C:\QTW"
  180.     LOCALINST$      = "1"
  181.     CLIENTINST$     = "2"
  182.     SERVERINST$     = "3"
  183.     SETUPPATH$      = DEST$
  184.     SETUPTYPE$      = LOCALINST$
  185.     APPNEEDS$       = "AppNeeds"
  186.     EXTRACOSTS$     = "ExtraCosts"
  187.     SECTIONKEY$     = "SectionKey"
  188.     SUCCESS%        = INSTALLFAILED
  189.  
  190.     ClearCopyList
  191.     rem For Local or Server installs ...
  192.     rem --------------------------------
  193. ''        IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  194.             AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  195.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST2$
  196. ''        END IF
  197.  
  198.         j% = CheckForOld()
  199.  
  200.         rem Copy all the files from the source to the destination
  201.         rem -----------------------------------------------------
  202.  
  203.         CopyFilesInCopyList
  204.  
  205.     rem Update WIN.INI and SYSTEM.INI
  206.     rem -----------------------------
  207. ''        IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  208.            inia$ = MakePath(DEST2$, "WIN.INI")
  209.            inib$ = MakePath(DEST2$, "WIN.QTW")
  210.            CopyFile inia$, inib$, cmoOverwrite, 0
  211.            inia$ = MakePath(DEST2$, "SYSTEM.INI")
  212.            inib$ = MakePath(DEST2$, "SYSTEM.QTW")
  213.            CopyFile inia$, inib$, cmoOverwrite, 0
  214.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
  215.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
  216.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  217.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  218.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  219.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(DEST$, "mciqtw.drv"), "SYSTEM.INI")
  220.  
  221.         rem Compatibility hacks.
  222.            i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  223.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  224.  
  225.         rem Update Registration Database
  226.         rem ----------------------------
  227.            RUN MakePath(DEST2$, "player.exe") + " install"
  228.            RUN MakePath(DEST2$, "viewer.exe") + " install"
  229.  
  230.         rem Create QTW.INI
  231.         rem ----------------
  232.            ini$ = MakePath(DEST2$, "QTW.INI")
  233.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  234.            RemoveIniKey ini$, "video", "optimize", cmoNone
  235.  
  236.  
  237. '***********************************************************************************
  238.  
  239.  
  240.     rem Create a Program Manager group
  241.     rem ------------------------------
  242.            GROUP$ = "QuickTime for Windows"
  243.            CreateProgmanGroup GROUP$, "", cmoNone
  244.            CreateProgmanItem GROUP$, "Player", MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  245.            CreateProgmanItem GROUP$, "Viewer", MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  246.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  247.  
  248. ''        END IF
  249.  
  250.     rem Indicate install completed OK
  251.     rem -----------------------------
  252.         InstallQT = INSTALLOK
  253.  
  254. END FUNCTION
  255.  
  256. rem Check for Older versions of the Quicktime For Windows components
  257. rem ---------------------------------------------------------------
  258. FUNCTION CheckForOld STATIC AS INTEGER
  259.  
  260. ''    sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  261.  
  262. CheckForOld1:
  263.     cursor% = ShowWaitCursor()
  264.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  265.     RestoreCursor cursor%
  266.     IF (OldFilePath$ <> "") THEN
  267.         j% = RemoveOldQTFiles(OldFilePath$)
  268.         IF j% = FILES_REMOVED THEN
  269.             GOTO CheckForOld1
  270.         END IF
  271.     END IF
  272.  
  273. CheckForOld2:
  274.     cursor% = ShowWaitCursor()
  275.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  276.     RestoreCursor cursor%
  277.     IF (OldFilePath$ <> "") THEN
  278.         j% = RemoveOldQTFiles(OldFilePath$)
  279.         IF j% = FILES_REMOVED THEN
  280.             GOTO CheckForOld2
  281.         END IF
  282.     END IF
  283.  
  284.     GetLocalHardDrivesList "HardDrives"
  285.     NumDrives% = GetListLength("HardDrives")
  286.  
  287.     IF (NUMDRIVES% > 0) THEN
  288.         FOR i% = 1 TO NumDrives% STEP 1
  289.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  290.             CheckForOld3:
  291.                 cursor% = ShowWaitCursor()
  292.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  293.                 RestoreCursor cursor%
  294.                 IF (OldFilePath$ <> "") THEN
  295.                     j% = RemoveOldQTFiles(OldFilePath$)
  296.                     IF j% = FILES_REMOVED THEN
  297.                         GOTO CheckForOld3
  298.                     END IF
  299.                 END IF
  300.  
  301.             CheckForOld4:
  302.                 cursor% = ShowWaitCursor()
  303.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  304.                 RestoreCursor cursor%
  305.                 IF (OldFilePath$ <> "") THEN
  306.                     j% = RemoveOldQTFiles(OldFilePath$)
  307.                     IF j% = FILES_REMOVED THEN
  308.                         GOTO CheckForOld4
  309.                     END IF
  310.                 END IF
  311.         NEXT i%
  312.     END IF
  313.  
  314.     UIPOP 1
  315.  
  316. END FUNCTION
  317.  
  318. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  319.  
  320.     RemoveOldQTFiles = FILES_SKIPPED
  321.  
  322.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  323.     DeadPath$ = drv$ + dir$
  324.  
  325.   rem check version resources if they exist
  326.       szVersion$ = GetVersionOfFile(FilePath$)
  327.  
  328.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  329.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  330. ''    sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  331.     sz$ = "CONTINUE"
  332.     UIPop 1
  333.  
  334.     IF sz$ = "BACK" THEN
  335.         EXIT FUNCTION
  336.     END IF
  337.  
  338.     IF sz$ <> "CONTINUE" THEN
  339.         EXIT FUNCTION
  340.     END IF
  341.  
  342.     rem all versions
  343.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  344.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  345.     rem version 1.0.0
  346.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  347.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  348.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  349.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  350.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  351.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  352.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  353.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  354.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  355.     rem version 1.1.x and later
  356.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  357.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  358.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  359.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  360.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  361.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  362.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  363.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  364.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  365.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  366.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  367.     rem version 1.9 and later
  368.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  369.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  370.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  371.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  372.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  373.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  374.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  375.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  376.  
  377.     RemoveOldQTFiles = FILES_REMOVED
  378.  
  379. END FUNCTION
  380.  
  381.